const CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
    publicPath: "./",
    productionSourceMap: false,
    devServer: {
        port: 3000,
        open: true,
        proxy: {
            "/api": {
                target: "http://127.0.0.1:6001",
                changeOrigin: true
            },
        },
    },
    pluginOptions: {
        'style-resources-loader': {
            preProcessor: 'sass',
            patterns: []
        }
    },
    configureWebpack: {
        optimization: {
            usedExports: true,
        },
        plugins: [
            new CompressionPlugin({
                algorithm: 'gzip', // 使用gzip压缩
                test: /\.js$|\.html$|\.css$/, // 匹配文件名
                filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名，后缀加.gz)
                minRatio: 1, // 压缩率小于1才会压缩
                threshold: 10240, // 对超过10k的数据压缩
                deleteOriginalAssets: false, // 是否删除未压缩的源文件，谨慎设置，如果希望提供非gzip的资源，可不设置或者设置为false（比如删除打包后的gz后还可以加载到原始资源文件）
            })
        ]
    },
    chainWebpack: (config) => {
        // 去除console
        config
            .plugin('uglifyjs-plugin')
            .use('uglifyjs-webpack-plugin', [{
                uglifyOptions: {
                    compress: {
                        // 删除所有的 `console` 语句，可以兼容ie浏览器
                        drop_console: true,
                        // 内嵌定义了但是只用到一次的变量
                        collapse_vars: true,
                        // 提取出出现多次但是没有定义成变量去引用的静态值
                        reduce_vars: true,
                    },
                    output: {
                        // 最紧凑的输出
                        beautify: false,
                        // 删除所有的注释
                        comments: false,
                    }
                }
            }])
        config.plugins.delete("prefetch")
        // config.module
        //     .rule('images')
        //     .use('image-webpack-loader')
        //     .loader('image-webpack-loader')
        //     .options({
        //         bypassOnDebug: true
        //     })
        //     .end()
    }
}